#pragma once

#include "EventManager.h"
#include "Geometry.h"
#include "Actor.h"

struct Event_Move_Actor_2D : public BaseEvent
{
	explicit Event_Move_Actor_2D(ActorId id, Vec2 pos, double orientation, Vec2 size)
		: m_id(id), m_position(pos), m_orientation(orientation), m_size(size)
	{
	}

	ActorId m_id;
	Vec2 m_position;
	Vec2 m_size;
	double m_orientation;

	static const EventType sk_eventType;
	virtual const EventType& VGetEventType(void) const
	{
		return sk_eventType;
	}
};

struct Event_New_RenderComponent_2D : public BaseEvent
{
	explicit Event_New_RenderComponent_2D(ActorId id, const std::shared_ptr<ISceneNode2D>& node)
		: m_id(id), m_sceneNode(node)
	{
	}

	ActorId m_id;
	std::shared_ptr<ISceneNode2D> m_sceneNode;

	static const EventType sk_eventType;
	virtual const EventType& VGetEventType(void) const
	{
		return sk_eventType;
	}
};

class Event_Test : public BaseEvent
{
public:
	static const EventType sk_eventType;

	virtual const EventType& VGetEventType(void) const
	{
		return sk_eventType;
	}
};